#pragma once

#include "../Common.h"

namespace DirectX
{
  class IRenderable
  {
  public:
    virtual RenderDesc* GetRenderData() = 0;
    virtual XMMATRIX GetWorldMatrix() = 0;

    virtual void SetTranslation(float x, float y, float z) = 0;
    virtual void SetRotation(float x, float y, float z) = 0;

    inline virtual bool Visible() { return m_visible; }
    inline virtual bool Pickable() { return m_pickable; }

    inline virtual void Show() { m_visible = true; }
    inline virtual void Hide() { m_visible = false; }
    
    inline virtual float Transparent() { return m_transparent; }
    inline virtual void SetTransparent(float value) { m_transparent = fabsf(value); }

  protected:
    ID3D11Buffer* m_vertexBuffer;
    ID3D11Buffer* m_indexBuffer;  
    bool m_visible;
    bool m_pickable;    
    float m_transparent;
  };
}